#ifndef FRAMELESSROUNDEDWINDOW_H
#define FRAMELESSROUNDEDWINDOW_H

#include <QEvent>
#include <QWidget>
/**
 * @brief The FrameLessWindow class  这是一个没有自带标题栏的窗体，并且需要实现窗口的拖动功能的基类，窗口拖动放大也需要
 * 需要加上鼠标追踪，鼠标追踪在绘画事件时做，并且只会运行一次。
 */

enum Location { TOP, BOTTOM, LEFT, RIGHT, TOP_LEFT, TOP_RIGHT, BOTTOM_LEFT, BOTTOM_RIGHT, CENTER };

class FrameLessRoundedWindow : public QWidget
{
    Q_OBJECT
public:
    explicit FrameLessRoundedWindow(QWidget *parent = nullptr);

signals:

protected:
    void mousePressEvent(QMouseEvent *event) override;
    void mouseMoveEvent(QMouseEvent *event) override;
    void mouseReleaseEvent(QMouseEvent *event) override;
    void paintEvent(QPaintEvent *event) override;

    bool childWidgetMaxed;

private:
    void setCursorShape(const QPoint &point);

private:
    QRect pos;
    bool leftPressed; //左键是否被按下
    QPoint offset; //这是记录鼠标到窗口左上角的偏移量即x和y坐标的差值
    int padding;   //这是定义鼠标变化的边界
    Location hoverPos; //这是位置
    int minWidth;      //最小宽度
    int minHeigth;     //最小高度
};

#endif // FRAMELESSROUNDEDWINDOW_H
